<template>
  <!-- 注意是 onSuccess 属性，不是事件 -->
  <UploadExcel :onSuccess="onSuccess" />
</template>

<script>
import { batchAddEmployee } from '@/api/employees';
import { formatExcelDate } from '@/utils';

export default {
  name: 'Import',
  methods: {
    // excelData 就是解析成功的 excel 文件中的数据 ==> { header, results }
    async onSuccess(excelData) {
      if (this.$route.query.type === 'employee') {
        // console.log(excelData);
        const keyMap = {
          手机号: 'mobile',
          姓名: 'username',
          入职日期: 'timeOfEntry',
          转正日期: 'correctionTime',
          工号: 'workNumber',
        };
        // 1. 先用 JSON.stringify 把 results 转换成 字符串
        // 2. 然后 用正则 替换 字符串中的 中文 的键 ==> 英文的键
        // 3. 然后再用 JSON.parse 将字符串 转换成 数组
        let resultsJSONStr = JSON.stringify(excelData.results);
        for (const [zhKey, enKey] of Object.entries(keyMap)) {
          // new RegExp(`"${zhKey}":`, 'g')
          // 第一个参数表示正则的规则文本（不需要左右的两个斜杠）
          // 第二个参数表示正则的修饰符：g i m
          // resultsJSONStr = resultsJSONStr.replace(new RegExp(`"${zhKey}":`, 'g'), `"${enKey}":`);
          resultsJSONStr = resultsJSONStr.replaceAll(`"${zhKey}":`, `"${enKey}":`);
        }
        const users = JSON.parse(resultsJSONStr);

        // 要进行 excel 日期格式的转换
        for (const v of users) {
          console.log(v.timeOfEntry, 'timeOfEntry');
          console.log(v.correctionTime, 'correctionTime');
          v.timeOfEntry = formatExcelDate(v.timeOfEntry, '-');
          v.correctionTime = formatExcelDate(v.correctionTime, '-');
        }

        // console.log(users);
        await batchAddEmployee(users);
        this.$message.success('员工批量导入成功');
        this.$router.back();
      } else if (this.$route.query.type === 'departments') {
        // 调用组织架构的批量导入接口
      }
    },
  },
  // beforeRouteEnter(to, from, next) {
  //   console.log(from, 'from...');
  //   next();
  // },

  // beforeRouteLeave(to, from, next) {
  //   // to.query.page = from.query.page

  //   to.meta.page = from.meta.page;
  //   next();
  // },
};
</script>

<style></style>
